#ifndef FLOATCHROMOSOME_H_
#define FLOATCHROMOSOME_H_

#include <QMetaType>

#include "ComplexChromosome.h"

/**
  * Class that represents chromosome containing floating point numbers.
  * Contains chromosome bits, fitness and methods to cross over and mutate.
  * @author Łukasz Szybka
  */
class FloatChromosome : public ComplexChromosome<double>
{
public:
    /**
      * Constructor
      */
    FloatChromosome();
    /**
      * Constructor
      * @param size Lenght of chromosome
      */
    FloatChromosome(int size);
    /**
      * Copy constructor
      * @param other FloatChromosome to copy
      */
    FloatChromosome(const FloatChromosome &other);

    QString toString() const;

    Chromosome* duplicate() const;

protected:
    double getRandomValue() const;

private:

};

Q_DECLARE_METATYPE(FloatChromosome);

#endif /*FLOATCHROMOSOME_H_*/
